package com.joker.demo.admin.util;


import cn.hutool.core.util.ObjectUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * @author : feixiang.li
 * @since : 2025-03-31 14:14
 */
public class ListGetUtils {

    private ListGetUtils() {

    }

    /**
     * 提取集合中非空对象的某个非空字段值
     *
     * @param data        数据集合
     * @param fieldGetter 字段提取方法（如 DwsWareHouseScrapCostPO::getCellId）
     * @return 提取后的非空字段列表
     */
    public static <T, R> List<R> extractNonNullField(List<T> data, Function<T, R> fieldGetter) {
        if (data == null) {
            return new ArrayList<>();
        }
        return data.stream()
                .filter(Objects::nonNull)
                .map(fieldGetter)
                .filter(ObjectUtil::isNotEmpty)
                .distinct()
                .collect(Collectors.toList());
    }
}
